{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Import modules\n",
    "\n",
    "updated with CuDNNLSTM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import random\n",
    "\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.layers import Dense, Dropout, LSTM, CuDNNLSTM, BatchNormalization\n",
    "from tensorflow.keras.callbacks import TensorBoard\n",
    "from tensorflow.keras.callbacks import ModelCheckpoint\n",
    "from tensorflow.keras.callbacks import Callback\n",
    "import tensorflow.keras.backend as K\n",
    "\n",
    "import math\n",
    "from sklearn.preprocessing import RobustScaler\n",
    "from collections import deque\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Import the CSV file with technical data and sentiment analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>lrets</th>\n",
       "      <th>MACD</th>\n",
       "      <th>stochastics</th>\n",
       "      <th>ATR</th>\n",
       "      <th>neg</th>\n",
       "      <th>neu</th>\n",
       "      <th>pos</th>\n",
       "      <th>Y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1990-01-30</th>\n",
       "      <td>322.980011</td>\n",
       "      <td>186030000.0</td>\n",
       "      <td>-0.006850</td>\n",
       "      <td>-1.512383</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.900024</td>\n",
       "      <td>0.043</td>\n",
       "      <td>0.910</td>\n",
       "      <td>0.047</td>\n",
       "      <td>-0.000882</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1990-02-01</th>\n",
       "      <td>328.790009</td>\n",
       "      <td>154580000.0</td>\n",
       "      <td>-0.000882</td>\n",
       "      <td>-1.185424</td>\n",
       "      <td>18.857509</td>\n",
       "      <td>6.879974</td>\n",
       "      <td>0.073</td>\n",
       "      <td>0.870</td>\n",
       "      <td>0.057</td>\n",
       "      <td>0.002806</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1990-02-05</th>\n",
       "      <td>331.850006</td>\n",
       "      <td>130950000.0</td>\n",
       "      <td>0.002806</td>\n",
       "      <td>-0.738707</td>\n",
       "      <td>28.789340</td>\n",
       "      <td>3.369995</td>\n",
       "      <td>0.106</td>\n",
       "      <td>0.815</td>\n",
       "      <td>0.080</td>\n",
       "      <td>-0.002370</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1990-02-08</th>\n",
       "      <td>332.959991</td>\n",
       "      <td>176240000.0</td>\n",
       "      <td>-0.002370</td>\n",
       "      <td>-0.328807</td>\n",
       "      <td>39.060605</td>\n",
       "      <td>4.239990</td>\n",
       "      <td>0.030</td>\n",
       "      <td>0.937</td>\n",
       "      <td>0.034</td>\n",
       "      <td>0.001980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1990-02-09</th>\n",
       "      <td>333.619995</td>\n",
       "      <td>146910000.0</td>\n",
       "      <td>0.001980</td>\n",
       "      <td>0.019442</td>\n",
       "      <td>41.643793</td>\n",
       "      <td>2.190002</td>\n",
       "      <td>0.055</td>\n",
       "      <td>0.901</td>\n",
       "      <td>0.045</td>\n",
       "      <td>0.002844</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             Adj Close       Volume     lrets      MACD  stochastics  \\\n",
       "1990-01-30  322.980011  186030000.0 -0.006850 -1.512383     0.000000   \n",
       "1990-02-01  328.790009  154580000.0 -0.000882 -1.185424    18.857509   \n",
       "1990-02-05  331.850006  130950000.0  0.002806 -0.738707    28.789340   \n",
       "1990-02-08  332.959991  176240000.0 -0.002370 -0.328807    39.060605   \n",
       "1990-02-09  333.619995  146910000.0  0.001980  0.019442    41.643793   \n",
       "\n",
       "                 ATR    neg    neu    pos         Y  \n",
       "1990-01-30  5.900024  0.043  0.910  0.047 -0.000882  \n",
       "1990-02-01  6.879974  0.073  0.870  0.057  0.002806  \n",
       "1990-02-05  3.369995  0.106  0.815  0.080 -0.002370  \n",
       "1990-02-08  4.239990  0.030  0.937  0.034  0.001980  \n",
       "1990-02-09  2.190002  0.055  0.901  0.045  0.002844  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_hdf('data2.h5', 'new_data')\n",
    "#data.index = pd.to_datetime(data.index, format='%Y-%m-%d')\n",
    "data['Y'] = data.lrets.shift(-1)\n",
    "data.dropna(axis=0, inplace=True)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f5be1a7d470>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "corr = data.corr()\n",
    "f, ax = plt.subplots(figsize=(5, 4))\n",
    "plt.title(\"Correlation between variables\")\n",
    "sns.heatmap(corr, \n",
    "            xticklabels=corr.columns.values,\n",
    "            yticklabels=corr.columns.values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Train Test split for recurrent neural net\n",
    "\n",
    "http://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html\n",
    "\n",
    "https://pythonprogramming.net/crypto-rnn-model-deep-learning-python-tensorflow-keras/?completed=/balancing-rnn-data-deep-learning-python-tensorflow-keras/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "G\n",
      "H\n",
      "I\n"
     ]
    }
   ],
   "source": [
    "d = deque('ghi')                 # make a new deque with three items\n",
    "for elem in d:                   # iterate over the deque's elements\n",
    "    print (elem.upper())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def preprocess_df(data, shuffle=True):\n",
    "    mapped_data = data.copy()\n",
    "    SEQ_LEN = 60\n",
    "\n",
    "    scaler = RobustScaler()\n",
    "    data = scaler.fit_transform(data)\n",
    "\n",
    "    sequential_data = []  # this is a list that will CONTAIN the sequences\n",
    "    prev_days = deque(maxlen=SEQ_LEN)  # These will be our actual sequences. They are made with deque, which keeps the maximum length by popping out older values as new ones come in\n",
    "\n",
    "    for i in data:  # iterate over the values\n",
    "        prev_days.append([n for n in i[:-1]])  # store all but the target\n",
    "\n",
    "        # if prev_days have 60 days of data\n",
    "        if len(prev_days) == SEQ_LEN:\n",
    "            # sequential_data = [prev_days_data, target variable]\n",
    "            sequential_data.append([np.array(prev_days), i[-1]])  \n",
    "    if shuffle == True:\n",
    "        random.shuffle(sequential_data)  # shuffle for good measure.\n",
    "\n",
    "    X = []\n",
    "    y = []\n",
    "\n",
    "    for seq, target in sequential_data:  # going over our new sequential data\n",
    "        X.append(seq)  # X is the sequences\n",
    "        y.append(target)  # y is the targets/labels (buys vs sell/notbuy)\n",
    "    \n",
    "    if shuffle == True:\n",
    "        return np.array(X), y \n",
    "    else:\n",
    "        return np.array(X), y, mapped_data, scaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "times = sorted(data.index.values)\n",
    "last_5pct = sorted(data.index.values)[-int(0.05*len(times))]\n",
    "\n",
    "validation_main_df = data[(data.index >= last_5pct)]\n",
    "main_df = data[(data.index < last_5pct)]\n",
    "\n",
    "prescaler = RobustScaler()\n",
    "prescaler = prescaler.fit(validation_main_df)\n",
    "\n",
    "X_train, y_train = preprocess_df(main_df)\n",
    "X_val, y_val, mapped_data, prescaler = preprocess_df(validation_main_df, shuffle=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Stochastic Gradient descent with restart\n",
    "\n",
    "Replacing Adam optimizer with SGDR for better performance\n",
    "\n",
    "https://www.jeremyjordan.me/nn-learning-rate/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "class SGDRScheduler(Callback):\n",
    "    '''Cosine annealing learning rate scheduler with periodic restarts.\n",
    "    # Usage\n",
    "        ```python\n",
    "            schedule = SGDRScheduler(min_lr=1e-5,\n",
    "                                     max_lr=1e-2,\n",
    "                                     steps_per_epoch=np.ceil(epoch_size/batch_size),\n",
    "                                     lr_decay=0.9,\n",
    "                                     cycle_length=5,\n",
    "                                     mult_factor=1.5)\n",
    "            model.fit(X_train, Y_train, epochs=100, callbacks=[schedule])\n",
    "        ```\n",
    "    # Arguments\n",
    "        min_lr: The lower bound of the learning rate range for the experiment.\n",
    "        max_lr: The upper bound of the learning rate range for the experiment.\n",
    "        steps_per_epoch: Number of mini-batches in the dataset. Calculated as `np.ceil(epoch_size/batch_size)`. \n",
    "        lr_decay: Reduce the max_lr after the completion of each cycle.\n",
    "                  Ex. To reduce the max_lr by 20% after each cycle, set this value to 0.8.\n",
    "        cycle_length: Initial number of epochs in a cycle.\n",
    "        mult_factor: Scale epochs_to_restart after each full cycle completion.\n",
    "    # References\n",
    "        Blog post: jeremyjordan.me/nn-learning-rate\n",
    "        Original paper: http://arxiv.org/abs/1608.03983\n",
    "    '''\n",
    "    def __init__(self,\n",
    "                 min_lr,\n",
    "                 max_lr,\n",
    "                 steps_per_epoch,\n",
    "                 lr_decay=1,\n",
    "                 cycle_length=10,\n",
    "                 mult_factor=2):\n",
    "\n",
    "        self.min_lr = min_lr\n",
    "        self.max_lr = max_lr\n",
    "        self.lr_decay = lr_decay\n",
    "\n",
    "        self.batch_since_restart = 0\n",
    "        self.next_restart = cycle_length\n",
    "\n",
    "        self.steps_per_epoch = steps_per_epoch\n",
    "\n",
    "        self.cycle_length = cycle_length\n",
    "        self.mult_factor = mult_factor\n",
    "\n",
    "        self.history = {}\n",
    "\n",
    "    def clr(self):\n",
    "        '''Calculate the learning rate.'''\n",
    "        fraction_to_restart = self.batch_since_restart / (self.steps_per_epoch * self.cycle_length)\n",
    "        lr = self.min_lr + 0.5 * (self.max_lr - self.min_lr) * (1 + np.cos(fraction_to_restart * np.pi))\n",
    "        return lr\n",
    "\n",
    "    def on_train_begin(self, logs={}):\n",
    "        '''Initialize the learning rate to the minimum value at the start of training.'''\n",
    "        logs = logs or {}\n",
    "        K.set_value(self.model.optimizer.lr, self.max_lr)\n",
    "\n",
    "    def on_batch_end(self, batch, logs={}):\n",
    "        '''Record previous batch statistics and update the learning rate.'''\n",
    "        logs = logs or {}\n",
    "        self.history.setdefault('lr', []).append(K.get_value(self.model.optimizer.lr))\n",
    "        for k, v in logs.items():\n",
    "            self.history.setdefault(k, []).append(v)\n",
    "\n",
    "        self.batch_since_restart += 1\n",
    "        K.set_value(self.model.optimizer.lr, self.clr())\n",
    "\n",
    "    def on_epoch_end(self, epoch, logs={}):\n",
    "        '''Check for end of current cycle, apply restarts when necessary.'''\n",
    "        if epoch + 1 == self.next_restart:\n",
    "            self.batch_since_restart = 0\n",
    "            self.cycle_length = np.ceil(self.cycle_length * self.mult_factor)\n",
    "            self.next_restart += self.cycle_length\n",
    "            self.max_lr *= self.lr_decay\n",
    "            self.best_weights = self.model.get_weights()\n",
    "\n",
    "    def on_train_end(self, logs={}):\n",
    "        '''Set weights to the values from the end of the most recent cycle for best performance.'''\n",
    "        self.model.set_weights(self.best_weights)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Learning rate finder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "class LRFinder(Callback):\n",
    "    \n",
    "    '''\n",
    "    A simple callback for finding the optimal learning rate range for your model + dataset. \n",
    "    \n",
    "    # Usage\n",
    "        ```python\n",
    "            lr_finder = LRFinder(min_lr=1e-5, \n",
    "                                 max_lr=1e-2, \n",
    "                                 steps_per_epoch=np.ceil(epoch_size/batch_size), \n",
    "                                 epochs=3)\n",
    "            model.fit(X_train, Y_train, callbacks=[lr_finder])\n",
    "            \n",
    "            lr_finder.plot_loss()\n",
    "        ```\n",
    "    \n",
    "    # Arguments\n",
    "        min_lr: The lower bound of the learning rate range for the experiment.\n",
    "        max_lr: The upper bound of the learning rate range for the experiment.\n",
    "        steps_per_epoch: Number of mini-batches in the dataset. Calculated as `np.ceil(epoch_size/batch_size)`. \n",
    "        epochs: Number of epochs to run experiment. Usually between 2 and 4 epochs is sufficient. \n",
    "        \n",
    "    # References\n",
    "        Blog post: jeremyjordan.me/nn-learning-rate\n",
    "        Original paper: https://arxiv.org/abs/1506.01186\n",
    "    '''\n",
    "    \n",
    "    def __init__(self, min_lr=1e-5, max_lr=1e-2, steps_per_epoch=None, epochs=None):\n",
    "        super().__init__()\n",
    "        \n",
    "        self.min_lr = min_lr\n",
    "        self.max_lr = max_lr\n",
    "        self.total_iterations = steps_per_epoch * epochs\n",
    "        self.iteration = 0\n",
    "        self.history = {}\n",
    "        \n",
    "    def clr(self):\n",
    "        '''Calculate the learning rate.'''\n",
    "        x = self.iteration / self.total_iterations \n",
    "        return self.min_lr + (self.max_lr-self.min_lr) * x\n",
    "        \n",
    "    def on_train_begin(self, logs=None):\n",
    "        '''Initialize the learning rate to the minimum value at the start of training.'''\n",
    "        logs = logs or {}\n",
    "        K.set_value(self.model.optimizer.lr, self.min_lr)\n",
    "        \n",
    "    def on_batch_end(self, epoch, logs=None):\n",
    "        '''Record previous batch statistics and update the learning rate.'''\n",
    "        logs = logs or {}\n",
    "        self.iteration += 1\n",
    "\n",
    "        self.history.setdefault('lr', []).append(K.get_value(self.model.optimizer.lr))\n",
    "        self.history.setdefault('iterations', []).append(self.iteration)\n",
    "\n",
    "        for k, v in logs.items():\n",
    "            self.history.setdefault(k, []).append(v)\n",
    "            \n",
    "        K.set_value(self.model.optimizer.lr, self.clr())\n",
    " \n",
    "    def plot_lr(self):\n",
    "        '''Helper function to quickly inspect the learning rate schedule.'''\n",
    "        plt.plot(self.history['iterations'], self.history['lr'])\n",
    "        plt.yscale('log')\n",
    "        plt.xlabel('Iteration')\n",
    "        plt.ylabel('Learning rate')\n",
    "        \n",
    "    def plot_loss(self):\n",
    "        '''Helper function to quickly observe the learning rate experiment results.'''\n",
    "        plt.plot(self.history['lr'], self.history['loss'])\n",
    "        plt.xscale('log')\n",
    "        plt.xlabel('Learning rate')\n",
    "        plt.ylabel('Loss')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Build up GRU model\n",
    "\n",
    "- Adam Optimizer = RMSProp + Momentum\n",
    "\n",
    "- RMSE should be more useful when large errors are particularly undesirable.\n",
    "\n",
    "- Batchnorm and dropout for regularization\n",
    "\n",
    "- https://www.quora.com/What-is-the-difference-between-dropout-and-batch-normalization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def build_model():\n",
    "    model = Sequential()\n",
    "    model.add(CuDNNLSTM(256, input_shape=(X_train.shape[1:]), return_sequences=True))\n",
    "    model.add(BatchNormalization())  #normalizes activation outputs, same reason you want to normalize your input data.\n",
    "\n",
    "    model.add(CuDNNLSTM(128, return_sequences=True))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Dropout(0.1))\n",
    "    \n",
    "    model.add(CuDNNLSTM(64))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Dropout(0.2))\n",
    "\n",
    "    model.add(Dense(32, activation='relu'))\n",
    "    model.add(BatchNormalization())\n",
    "    model.add(Dropout(0.2))\n",
    "\n",
    "    model.add(Dense(1, activation='tanh'))\n",
    "    \n",
    "    opt = tf.keras.optimizers.RMSprop(lr=7e-3)\n",
    "    model.compile(loss='mse',optimizer=opt, metrics=['mse'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model = build_model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "ename": "ImportError",
     "evalue": "Failed to import `pydot`. Please install `pydot`. For example with `pip install pydot`.",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mImportError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-14-a70009143d02>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mkeras\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mplot_model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplot_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mto_file\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'model.png'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m~/anaconda3/envs/dasc/lib/python3.6/site-packages/keras/utils/vis_utils.py\u001b[0m in \u001b[0;36mplot_model\u001b[0;34m(model, to_file, show_shapes, show_layer_names, rankdir)\u001b[0m\n\u001b[1;32m    130\u001b[0m             \u001b[0;34m'LR'\u001b[0m \u001b[0mcreates\u001b[0m \u001b[0ma\u001b[0m \u001b[0mhorizontal\u001b[0m \u001b[0mplot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    131\u001b[0m     \"\"\"\n\u001b[0;32m--> 132\u001b[0;31m     \u001b[0mdot\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel_to_dot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshow_shapes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshow_layer_names\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrankdir\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    133\u001b[0m     \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mextension\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mto_file\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    134\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mextension\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/dasc/lib/python3.6/site-packages/keras/utils/vis_utils.py\u001b[0m in \u001b[0;36mmodel_to_dot\u001b[0;34m(model, show_shapes, show_layer_names, rankdir)\u001b[0m\n\u001b[1;32m     53\u001b[0m     \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodels\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSequential\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     54\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 55\u001b[0;31m     \u001b[0m_check_pydot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     56\u001b[0m     \u001b[0mdot\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpydot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mDot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     57\u001b[0m     \u001b[0mdot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'rankdir'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrankdir\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/anaconda3/envs/dasc/lib/python3.6/site-packages/keras/utils/vis_utils.py\u001b[0m in \u001b[0;36m_check_pydot\u001b[0;34m()\u001b[0m\n\u001b[1;32m     18\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mpydot\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     19\u001b[0m         raise ImportError(\n\u001b[0;32m---> 20\u001b[0;31m             \u001b[0;34m'Failed to import `pydot`. '\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     21\u001b[0m             \u001b[0;34m'Please install `pydot`. '\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     22\u001b[0m             'For example with `pip install pydot`.')\n",
      "\u001b[0;31mImportError\u001b[0m: Failed to import `pydot`. Please install `pydot`. For example with `pip install pydot`."
     ]
    }
   ],
   "source": [
    "from keras.utils import plot_model\n",
    "plot_model(model, to_file='model.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/1\n",
      "  64/4562 [..............................] - ETA: 1:39 - loss: 3.9782 - mean_squared_error: 3.9782WARNING:tensorflow:Method on_batch_end() is slow compared to the batch update (0.130216). Check your callbacks.\n",
      "4562/4562 [==============================] - 11s 2ms/step - loss: 2.1090 - mean_squared_error: 2.1090\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# find learning rate first\n",
    "epoch_size = 20\n",
    "batch_size = 256\n",
    "\n",
    "lr_finder = LRFinder(min_lr=1e-5, \n",
    "                     max_lr=1e-2, \n",
    "                     steps_per_epoch=np.ceil(epoch_size/batch_size), \n",
    "                     epochs=3)\n",
    "model.fit(X_train, y_train, callbacks=[lr_finder])\n",
    "\n",
    "lr_finder.plot_loss()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 4105 samples, validate on 457 samples\n",
      "Epoch 1/20\n",
      "  64/4105 [..............................] - ETA: 1:30 - loss: 1.9547 - mean_squared_error: 1.9547WARNING:tensorflow:Method on_batch_end() is slow compared to the batch update (0.138373). Check your callbacks.\n",
      "4105/4105 [==============================] - 11s 3ms/step - loss: 1.7349 - mean_squared_error: 1.7349 - val_loss: 1.5083 - val_mean_squared_error: 1.5083\n",
      "Epoch 2/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.5201 - mean_squared_error: 1.5201 - val_loss: 1.4421 - val_mean_squared_error: 1.4421\n",
      "Epoch 3/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.4363 - mean_squared_error: 1.4363 - val_loss: 1.4503 - val_mean_squared_error: 1.4503\n",
      "Epoch 4/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.4238 - mean_squared_error: 1.4238 - val_loss: 1.4527 - val_mean_squared_error: 1.4527\n",
      "Epoch 5/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.4171 - mean_squared_error: 1.4171 - val_loss: 1.4516 - val_mean_squared_error: 1.4516\n",
      "Epoch 6/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.4099 - mean_squared_error: 1.4099 - val_loss: 1.4811 - val_mean_squared_error: 1.4811\n",
      "Epoch 7/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3976 - mean_squared_error: 1.3976 - val_loss: 1.4497 - val_mean_squared_error: 1.4497\n",
      "Epoch 8/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3920 - mean_squared_error: 1.3920 - val_loss: 1.4741 - val_mean_squared_error: 1.4741\n",
      "Epoch 9/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3725 - mean_squared_error: 1.3725 - val_loss: 1.4644 - val_mean_squared_error: 1.4644\n",
      "Epoch 10/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3829 - mean_squared_error: 1.3829 - val_loss: 1.4679 - val_mean_squared_error: 1.4679\n",
      "Epoch 11/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3694 - mean_squared_error: 1.3694 - val_loss: 1.4852 - val_mean_squared_error: 1.4852\n",
      "Epoch 12/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3782 - mean_squared_error: 1.3782 - val_loss: 1.4459 - val_mean_squared_error: 1.4459\n",
      "Epoch 13/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3713 - mean_squared_error: 1.3713 - val_loss: 1.4410 - val_mean_squared_error: 1.4410\n",
      "Epoch 14/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3792 - mean_squared_error: 1.3792 - val_loss: 1.5194 - val_mean_squared_error: 1.5194\n",
      "Epoch 15/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3718 - mean_squared_error: 1.3718 - val_loss: 1.4178 - val_mean_squared_error: 1.4178\n",
      "Epoch 16/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3704 - mean_squared_error: 1.3704 - val_loss: 1.4328 - val_mean_squared_error: 1.4328\n",
      "Epoch 17/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3558 - mean_squared_error: 1.3558 - val_loss: 1.4327 - val_mean_squared_error: 1.4327\n",
      "Epoch 18/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3680 - mean_squared_error: 1.3680 - val_loss: 1.4291 - val_mean_squared_error: 1.4291\n",
      "Epoch 19/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3511 - mean_squared_error: 1.3511 - val_loss: 1.4710 - val_mean_squared_error: 1.4710\n",
      "Epoch 20/20\n",
      "4105/4105 [==============================] - 9s 2ms/step - loss: 1.3578 - mean_squared_error: 1.3578 - val_loss: 1.4384 - val_mean_squared_error: 1.4384\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.keras.callbacks.History at 0x7fd18e540ef0>"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = build_model()\n",
    "schedule = SGDRScheduler(min_lr=1e-3,\n",
    "                         max_lr=1e-2,\n",
    "                         steps_per_epoch=np.ceil(epoch_size/batch_size),\n",
    "                         lr_decay=0.9,\n",
    "                         cycle_length= 3,\n",
    "                         mult_factor=1.5)\n",
    "\n",
    "model.fit(\n",
    "    X_train,\n",
    "    y_train,\n",
    "    epochs=20, \n",
    "    callbacks=[schedule],\n",
    "    validation_split=0.1,\n",
    "    verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train RMSE: 1.180668\n",
      "Test RMSE: 1.681138\n"
     ]
    }
   ],
   "source": [
    "trainScore = model.evaluate(X_train, y_train, verbose=0)\n",
    "print('Train RMSE: %2f' % math.sqrt(trainScore[0]))\n",
    "\n",
    "testScore = model.evaluate(X_val, y_val, verbose=0)\n",
    "print('Test RMSE: %2f'% math.sqrt(testScore[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "p = model.predict(X_val)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If the chosen model fits worse than a horizontal line, then R2 is negative."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Plotting Predicted value vs True value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [],
   "source": [
    "padding = np.zeros((184, 9))\n",
    "pred_result = pd.DataFrame(data=padding)\n",
    "pred_result['9'] = p\n",
    "pred = prescaler.inverse_transform(pred_result)\n",
    "\n",
    "val_result = pd.DataFrame(data=padding)\n",
    "val_result['9'] = y_val\n",
    "val = prescaler.inverse_transform(val_result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = pred[:, -1]\n",
    "val = val[:, -1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1512x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(21,7))\n",
    "plt.plot(data.index[-len(pred):], np.expm1(pred)*100, color='red', label='Prediction')\n",
    "plt.plot(data.index[-len(val):], np.expm1(val)*100, color='blue', label='True Value')\n",
    "plt.xlabel(\"Date\")\n",
    "plt.ylabel(\"Return (%)\")\n",
    "plt.title('Predicted value vs True Value')\n",
    "plt.legend(loc='best')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The residual plot is not normal"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 192,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((array([-2.67289247, -2.36046913, -2.18213076, -2.05428693, -1.95319937,\n",
       "         -1.86884759, -1.7960154 , -1.73162634, -1.67370719, -1.62091343,\n",
       "         -1.57228594, -1.52711548, -1.48486215, -1.44510502, -1.40750925,\n",
       "         -1.37180394, -1.33776662, -1.30521228, -1.27398532, -1.24395353,\n",
       "         -1.21500362, -1.18703768, -1.15997053, -1.13372755, -1.10824298,\n",
       "         -1.08345855, -1.05932238, -1.03578805, -1.01281386, -0.99036218,\n",
       "         -0.96839893, -0.94689317, -0.92581667, -0.90514361, -0.88485034,\n",
       "         -0.86491508, -0.84531776, -0.82603984, -0.80706413, -0.78837467,\n",
       "         -0.76995661, -0.75179612, -0.73388025, -0.71619691, -0.69873475,\n",
       "         -0.68148309, -0.66443192, -0.64757178, -0.63089375, -0.61438939,\n",
       "         -0.59805072, -0.58187017, -0.56584054, -0.54995501, -0.53420707,\n",
       "         -0.51859052, -0.50309943, -0.48772815, -0.47247125, -0.45732355,\n",
       "         -0.44228007, -0.42733602, -0.41248681, -0.39772801, -0.38305534,\n",
       "         -0.36846467, -0.35395204, -0.33951357, -0.32514555, -0.31084433,\n",
       "         -0.29660642, -0.28242838, -0.26830689, -0.25423871, -0.24022066,\n",
       "         -0.22624967, -0.2123227 , -0.19843679, -0.18458905, -0.17077661,\n",
       "         -0.15699667, -0.14324649, -0.12952333, -0.11582453, -0.10214743,\n",
       "         -0.08848941, -0.07484788, -0.06122026, -0.04760401, -0.03399657,\n",
       "         -0.02039543, -0.00679806,  0.00679806,  0.02039543,  0.03399657,\n",
       "          0.04760401,  0.06122026,  0.07484788,  0.08848941,  0.10214743,\n",
       "          0.11582453,  0.12952333,  0.14324649,  0.15699667,  0.17077661,\n",
       "          0.18458905,  0.19843679,  0.2123227 ,  0.22624967,  0.24022066,\n",
       "          0.25423871,  0.26830689,  0.28242838,  0.29660642,  0.31084433,\n",
       "          0.32514555,  0.33951357,  0.35395204,  0.36846467,  0.38305534,\n",
       "          0.39772801,  0.41248681,  0.42733602,  0.44228007,  0.45732355,\n",
       "          0.47247125,  0.48772815,  0.50309943,  0.51859052,  0.53420707,\n",
       "          0.54995501,  0.56584054,  0.58187017,  0.59805072,  0.61438939,\n",
       "          0.63089375,  0.64757178,  0.66443192,  0.68148309,  0.69873475,\n",
       "          0.71619691,  0.73388025,  0.75179612,  0.76995661,  0.78837467,\n",
       "          0.80706413,  0.82603984,  0.84531776,  0.86491508,  0.88485034,\n",
       "          0.90514361,  0.92581667,  0.94689317,  0.96839893,  0.99036218,\n",
       "          1.01281386,  1.03578805,  1.05932238,  1.08345855,  1.10824298,\n",
       "          1.13372755,  1.15997053,  1.18703768,  1.21500362,  1.24395353,\n",
       "          1.27398532,  1.30521228,  1.33776662,  1.37180394,  1.40750925,\n",
       "          1.44510502,  1.48486215,  1.52711548,  1.57228594,  1.62091343,\n",
       "          1.67370719,  1.73162634,  1.7960154 ,  1.86884759,  1.95319937,\n",
       "          2.05428693,  2.18213076,  2.36046913,  2.67289247]),\n",
       "  array([-1.86106448e-02, -1.84996936e-02, -1.69804149e-02, -1.64634262e-02,\n",
       "         -1.59437478e-02, -1.35155658e-02, -1.24442900e-02, -1.21175351e-02,\n",
       "         -1.18984919e-02, -1.16035417e-02, -1.12275861e-02, -1.05765533e-02,\n",
       "         -9.55482963e-03, -9.55395454e-03, -9.45507593e-03, -8.49437967e-03,\n",
       "         -8.46041985e-03, -8.18336881e-03, -8.17293515e-03, -7.73569781e-03,\n",
       "         -7.33459274e-03, -7.18777424e-03, -6.89695424e-03, -6.60399516e-03,\n",
       "         -6.44026439e-03, -6.11569238e-03, -5.82468920e-03, -5.76463727e-03,\n",
       "         -5.74989483e-03, -5.64365863e-03, -5.38483824e-03, -5.33839093e-03,\n",
       "         -5.25190145e-03, -5.09011561e-03, -5.01358392e-03, -4.96540210e-03,\n",
       "         -4.89068212e-03, -4.81316170e-03, -4.68466133e-03, -4.59300679e-03,\n",
       "         -4.42990523e-03, -4.21276825e-03, -4.08296457e-03, -3.75240548e-03,\n",
       "         -3.17592791e-03, -2.84647265e-03, -2.47751552e-03, -2.36519342e-03,\n",
       "         -2.30469800e-03, -2.28606159e-03, -2.21085183e-03, -2.10787992e-03,\n",
       "         -2.08981348e-03, -1.96393611e-03, -1.91295148e-03, -1.73906094e-03,\n",
       "         -1.73161988e-03, -1.72726315e-03, -1.71744885e-03, -1.63894179e-03,\n",
       "         -1.62083201e-03, -1.56939650e-03, -1.55808261e-03, -1.49451892e-03,\n",
       "         -1.48344437e-03, -1.46248369e-03, -1.44999212e-03, -1.21643282e-03,\n",
       "         -1.20597094e-03, -1.17826472e-03, -1.15478950e-03, -1.11399297e-03,\n",
       "         -1.03999736e-03, -8.93537080e-04, -8.70139565e-04, -8.51040635e-04,\n",
       "         -8.06682767e-04, -5.90115100e-04, -5.79627443e-04, -5.42385193e-04,\n",
       "         -5.34618856e-04, -5.02895988e-04, -4.43349189e-04, -3.94245807e-04,\n",
       "         -3.29297109e-04, -2.38576060e-04, -1.76457126e-04, -1.03364042e-04,\n",
       "         -9.01022051e-05, -7.82563989e-05,  8.83190307e-06,  8.53692741e-05,\n",
       "          1.60251440e-04,  2.68807638e-04,  3.15296954e-04,  3.50202416e-04,\n",
       "          3.52158173e-04,  3.77581486e-04,  4.25377414e-04,  4.54937553e-04,\n",
       "          4.88837198e-04,  4.98527263e-04,  5.41812616e-04,  6.64694422e-04,\n",
       "          6.81092928e-04,  6.97250540e-04,  7.03689860e-04,  7.06873530e-04,\n",
       "          7.33573150e-04,  8.26030373e-04,  9.67675570e-04,  1.08831213e-03,\n",
       "          1.21388014e-03,  1.23082336e-03,  1.24110414e-03,  1.37053356e-03,\n",
       "          1.39944572e-03,  1.40149462e-03,  1.43740262e-03,  1.49052244e-03,\n",
       "          1.49078113e-03,  1.50600909e-03,  1.51639717e-03,  1.60201713e-03,\n",
       "          1.67156618e-03,  1.72340115e-03,  1.75361671e-03,  1.90691196e-03,\n",
       "          1.90973992e-03,  2.01024384e-03,  2.11892148e-03,  2.11995454e-03,\n",
       "          2.12434787e-03,  2.24102017e-03,  2.27311361e-03,  2.27430040e-03,\n",
       "          2.27457319e-03,  2.30427728e-03,  2.36172430e-03,  2.36940034e-03,\n",
       "          2.50400423e-03,  2.56389964e-03,  2.64066802e-03,  2.89213647e-03,\n",
       "          2.95289264e-03,  2.96396069e-03,  3.01595399e-03,  3.29087265e-03,\n",
       "          3.35397397e-03,  3.37207436e-03,  3.78070571e-03,  3.79328649e-03,\n",
       "          4.25157955e-03,  4.59266125e-03,  4.61626393e-03,  4.70418925e-03,\n",
       "          4.89196441e-03,  5.02814845e-03,  5.06340332e-03,  5.28078677e-03,\n",
       "          5.32310583e-03,  5.36315911e-03,  5.47552604e-03,  5.86537236e-03,\n",
       "          5.89252156e-03,  6.30559569e-03,  6.54679192e-03,  6.75114837e-03,\n",
       "          7.02377600e-03,  7.06110324e-03,  7.77158096e-03,  8.16819433e-03,\n",
       "          8.34897266e-03,  1.06236078e-02,  1.18035196e-02,  1.19091283e-02,\n",
       "          1.39608710e-02,  1.63827270e-02,  2.00130969e-02,  2.04939937e-02,\n",
       "          2.46808109e-02,  3.32113676e-02,  3.60793545e-02,  4.15562967e-02])),\n",
       " (0.007263143917977626, 0.00018735400281190867, 0.9141322226522435))"
      ]
     },
     "execution_count": 192,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import scipy.stats as stats\n",
    "residual = np.expm1(pred) - np.expm1(val)\n",
    "stats.probplot(residual, dist=\"norm\", plot=plt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Updates to be continued"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
